package com.zfzs.post.modules.common.service;

import com.zfzs.post.modules.common.domain.AgentContact;
import com.zfzs.post.modules.common.domain.AgentTree;

import java.util.List;

/**
 * @author wq
 * @date 2019/10/16 11:39
 * @description
 */
public interface AgentTreeService {
    /**
     * 根据id获取单个
     * @param id
     * @return
     */
    AgentTree findOne(Long id);

    /**
     *更新树形关系
     * @param agentId
     * @param pidId
     */
    void updateTree(Long agentId,Long pidId);

    /**
     * 储存or 修改
     * @param agentTree
     * @return
     */
    AgentTree save(AgentTree agentTree);

    /**
     * 根据代理商id获取
     * @param agentId
     * @return
     */
    AgentTree findByAgentId(Long agentId);

    /**
     * 查询所有
     * @return
     */
    List<AgentTree> queryAll();

    /**
     * 查询所有合伙人(直营+间接)
     * @param agentId
     * @return
     */
    List<Long> findAllTeamIds(Long agentId);

    /**
     * 查询直属
     * @param agentId
     * @return
     */
    List<Long> findDirectlyIds(Long agentId);

    /**
     * 合伙人id（间接）
     */
    List<Long> findAgentTeam(Long agentId);

    /**
     * 根据团队类型以及上级获取下级id列表
     * @param teamType enums:
     * @param agentId
     * @return
     */
    List<Long> findListByTeamType(String teamType,Long agentId);

}
